
#include<iostream>
#include <unistd.h>
using namespace std;
int main()
{
    char *const argv[] = {"ps", "-ef", NULL};
    char *const envp[] = {"PATH=/bin:/usr/bin", "TERM=console", NULL};

    execl("/bin/ps", "ps", "-ef", NULL);

    // 带p的，可以使用环境变量PATH，无需写全路径
    execlp("ps", "ps", "-ef", NULL);

    // 带e的，需要自己组装环境变量
    execle("ps", "ps", "-ef", NULL, envp);
    
    execv("/bin/ps", argv);

    // 带p的，可以使用环境变量PATH，无需写全路径
    execvp("ps", argv);

    // 带e的，需要自己组装环境变量
    execve("/bin/ps", argv, envp);

    exit(0);
}








// #include <iostream>
// #include <cstdlib> // 用于 getenv, setenv, unsetenv
// using namespace std;
// int main(int argc, char *argv[])
// {
//     // 获取特定环境变量的值
//     char *path = getenv("PATH");
//     if (path != nullptr)
//     {
//         cout << "PATH: " << path << endl;
//     }
//     else
//     {
//         cout << "PATH environment variable not found" << endl;
//     }

//     // 遍历所有环境变量
//     extern char **environ;
//     // for (char **env = environ; *env != nullptr; ++env)
//     // {
//     //     cout << *env << endl;
//     // }

//     int i = 0;
//     for (; environ[i]; i++)
//     {
//         printf("%s\n", environ[i]);
//     }

//     // 设置环境变量
//     setenv("MY_SHELL_TEST", "my_shell_test", 1);

//     // 删除环境变量
//     unsetenv("MY_SHELL_TEST");

//     return 0;
// }
